package com.方法引用.引用对象方法;

/*
* 练习
    定义一个类(PrintString), 里面定义一个方法
        public void printUpper(String s):把字符串参数变成大写的数据，然后在控制台输出
    定义一个接口(Printer),里面定义一个抽象方法
        void printUpperCase(Strings)
    定义一个测试类(PrinterDemo), 在测试类中提供两个方法
        一个方法是: usePrinter(Printer p)
        一个方法是主方法，在主方法中调用usePrinter方法
* */

import java.util.Locale;

public class PrinterDemo {
    public static void main(String[] args) {
//        usePrinter((String s) -> {
////            String reslt = s.toUpperCase();
////            System.out.println(reslt);
//            System.out.println(s.toUpperCase());
//        });

//        usePrinter(s -> System.out.println(s.toUpperCase()));

        //引用对象的实例方法
        PringString ps = new PringString();
        usePrinter(ps::printUpper);

        //lambda表达式被对象的实例方法替代的时候，他的形式参数全部传递给改方法作为参数
    }

    public static void usePrinter(Printer p) {
        p.printUpperCase("HelloWorld");
    }
}
